import 'package:flutter/widgets.dart';

class SingleCollectionPageTranslation {
  static final delegate = _SingleCollectionPageTranslationDelegate();

  static SingleCollectionPageTranslation of(BuildContext context) {
    return Localizations.of(context, SingleCollectionPageTranslation);
  }

  late String _languageCode;

  Future<void> load(Locale locale) async {
    _languageCode = locale.languageCode;
  }

  String _resolve(Map<String, String> translations) {
    return translations[_languageCode]!;
  }

  String get collectionRepetitionProgressHeader {
    return _resolve(const {
      'ru': 'Прогресс слов по повторам',
      'en': 'Progress of words by repetitions',
    });
  }

  /////////////////////////////////////////////////////////////////////////////////////////////////
  // actions
  /////////////////////////////////////////////////////////////////////////////////////////////////
  // <editor-fold defaultstate="collapsed">

  String get collectionRenamingActionTitle {
    return _resolve(const {
      'ru': 'Переименовать коллекцию',
      'en': 'Rename this collection',
    });
  }

  String get collectionDeletionActionTitle {
    return _resolve(const {
      'ru': 'Удалить коллекцию',
      'en': 'Delete this collection',
    });
  }

  String get markingAlreadyKnownWordActionTitle {
    return _resolve(const {
      'ru': 'Отметить уже известные слова',
      'en': 'Mark already known words',
    });
  }

  String get lexicalItemAdditionActionTitle {
    return _resolve(const {
      'ru': 'Добавить слово',
      'en': 'Add a word',
    });
  }

  String get csvLexicalItemImportActionTitle {
    return _resolve(const {
      'ru': 'Импортировать слова из CSV',
      'en': 'Import words from a CSV file',
    });
  }

  String get textLexicalItemImportActionTitle {
    return _resolve(const {
      'ru': 'Импортировать слова из текста',
      'en': 'Import words from text',
    });
  }

  String get lexicalItemRemovalActionTitle {
    return _resolve(const {
      'ru': 'Удалить слова',
      'en': 'Remove words',
    });
  }

  // </editor-fold>

  /////////////////////////////////////////////////////////////////////////////////////////////////
  // dialogs
  /////////////////////////////////////////////////////////////////////////////////////////////////
  // <editor-fold defaultstate="collapsed">

  String get collectionDeletionDialogTitle {
    return _resolve(const {
      'ru': 'Ты действительно хочешь удалить эту коллекцию?',
      'en': 'Are you sure you want to delete this collection?',
    });
  }

  String get collectionDeletionDialogCollectionDeletionAnswer {
    return _resolve(const {
      'ru': 'Удалить коллекцию',
      'en': 'Delete this collection',
    });
  }

  String get collectionDeletionDialogCollectionAndLexicalItemDeletionAnswer {
    return _resolve(const {
      'ru': 'Удалить коллекцию и стереть свои слова',
      'en': 'Delete this collection and erase own words',
    });
  }

  String get lexicalItemRemovalDialogTitle {
    return _resolve(const {
      'ru': 'Ты действительно хочешь удалить выбранные слова?',
      'en': 'Are you sure you want to remove the selected words?',
    });
  }

  String get lexicalItemRemovalDialogRemovalAnswer {
    return _resolve(const {
      'ru': 'Удалить из коллекции',
      'en': 'Remove from this collection',
    });
  }

  String get lexicalItemRemovalDialogDeletionAnswer {
    return _resolve(const {
      'ru': 'Удалить из коллекции и стереть свои слова',
      'en': 'Remove from this collection and erase own words',
    });
  }

  String get customLexicalItemDeletionDialogTitle {
    return _resolve(const {
      'ru': 'Некоторые из стираемых слов содержатся в других коллекциях.',
      'en': 'Some of the words you are erasing are contained in other collections.',
    });
  }

  String get customLexicalItemDeletionDialogUniqueLexicalItemDeletionAnswer {
    return _resolve(const {
      'ru': 'Оставить их в других коллекциях',
      'en': 'Leave them in other collections',
    });
  }

  String get customLexicalItemDeletionDialogAllLexicalItemDeletionAnswer {
    return _resolve(const {
      'ru': 'Удалить их из всех коллекций и стереть',
      'en': 'Remove them from all collections and erase',
    });
  }

// </editor-fold>
}

class _SingleCollectionPageTranslationDelegate
    extends LocalizationsDelegate<SingleCollectionPageTranslation> {
  @override
  bool isSupported(Locale locale) => const ['ru', 'en'].contains(locale.languageCode);

  @override
  bool shouldReload(LocalizationsDelegate<SingleCollectionPageTranslation> old) => false;

  @override
  Future<SingleCollectionPageTranslation> load(Locale locale) async {
    final translation = SingleCollectionPageTranslation();
    await translation.load(locale);
    return translation;
  }
}
